Computer software is fundamentally a set of instructions written to carry out a desired task. Computer software can be stored and distributed in many forms, including but not limited to local storage such as hard disk drives and optical media (e.g. compact discs), networked storage devices, and even non-digital media (e.g. punch cards). The highly portable nature of computer software, and other digital content, facilitates duplication and distribution. Computer software can be made up of many individual software components, such as files or executable programs, which are typically encapsulated in an executable installation package for ease of distribution. The installation package will typically include an executable program to remove, or uninstall, the computer software. Computer software is also frequently modified and updated.
Software deployment is the process of making computer software available for use on a computer system. Conventional software deployment involves copying an installation package to the local storage of a computer system and executing the installation package to place the individual software components on the system. In a network environment, where computer software must be deployed to multiple computer systems, this process is typically automated. Furthermore, in network environments, the installation package is typically executed remotely on a networked storage device and only the individual software components from within the installation package are copied to the multiple computer systems.
The use and distribution of commercially available computer software is typically controlled by software licenses. Depending on the level of software license purchased, the computer software may be fully activated or some features may be limited. Different software license options are typically available for the level of features desired and the number of computer systems that may use the software package under a single software license.
Software asset management typically refers to the tracking and management of computer software installed on a computer system for the purposes of keeping the computer software up to date, identifying conflicts, managing software licenses, and tracking software usage. Software asset management solutions are typically employed in large organizations where numerous packages of computer software are deployed to a multitude of computer systems in a networked environment.